package com.cxk.hr.dao;

import java.util.Date;
import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.cxk.hr.pojo.Attendance;
import com.cxk.hr.pojo.Department;
import com.cxk.hr.pojo.Employee;
import com.cxk.hr.pojo.Leave;
import com.cxk.hr.pojo.Overtime;
import com.cxk.hr.pojo.Position;

public interface EmployeeMapper {

	/**
	 * 登录验证
	 * 
	 * @param employeeNumber
	 * @param password
	 * @return
	 */
	Employee checkLogin(@Param("employeeNumber") Integer employeeNumber, @Param("password") String password);

	/**
	 * 分页查询所有员工
	 * 
	 * @return
	 */
	List<Employee> selectListByPage(@Param("pageNo") Integer pageNo, @Param("pageSize") Integer pageSize);

	/**
	 * 添加员工（同时插入到员工表和员工档案表）
	 * 
	 * @param employee
	 * @return
	 */
	Integer addEmployee(@Param("employee") Employee employee);

	/**
	 * 根据id查询一个员工的信息
	 * 
	 * @param id
	 * @return
	 */
	Employee selectEmployeeById(Integer id);

	/**
	 * 更新员工信息
	 * 
	 * @param employee
	 * @param status
	 */
	Integer updateEmployee(@Param("employee") Employee employee, @Param("status") String status,
			@Param("manager") String manager);

	/**
	 * 删除员工信息
	 * 
	 * @param id
	 */
	Integer deleteEmployee(Integer id);

	/**
	 * 根据employeeNumber查询信息
	 * 
	 * @param employeeNumber
	 * @return
	 */
	Employee selectByNumber(Integer employeeNumber);

	/**
	 * 根据输入查询员工信息
	 * 
	 * @param input
	 * @return
	 */
	List<Employee> search(@Param("input")String input, @Param("pageNo")Integer pageNo);

	List<Employee> findAll();

	/**
	 * 
	 */
	Employee findEmpById(@Param("id") Integer id);// 查询

	Integer updataEmpById(Employee employee);// 修改

	List<Department> findAlldept(); // 部门查询

	List<Position> findAllpos();// 职称查询

	List<Attendance> findAllatt(@Param("id") Integer id);// 考勤查询

	List<Leave> findAlllea(@Param("id") Integer id);// 自己请假信息

	List<Overtime> findAllovertime();// 加班时间

	List<Employee> fingdAllpeo(); // 查询所有的员工

	Department findDepartByName(String name); // 通过部门名称查询部门编号

	Position findPosByName(String name); // 通过职称名称查询职称编号

	List<Employee> findEmpByDeptNum(Integer id); // 通过部门id查找员工

	Integer addOverTime(@Param("departmentNumber") Integer departmentNumber,
			@Param("employeeNumber") Integer employeeNumber, @Param("date") Date date);// 新增加班

	Integer addLeave(@Param("employeeNumber") Integer employeeNumber,
			@Param("departmentNumber") Integer departmentNumber, @Param("startTime") Date startTime,
			@Param("endTime") Date endTime, @Param("days") String days, @Param("type") String type,
			@Param("reason") String reason); // 申请请假
}
